#include "fenetreattaque.h"

FenetreAttaque::FenetreAttaque(Joueur *J1, Joueur *JNEUTRE, Joueur *J2, QWidget *p):QDialog(p)
{    
    J=J1;
    O=JNEUTRE;
    P=J2;
}

bool FenetreAttaque::run()
{

    QFormLayout form(this);
    form.addRow(new QLabel("Vos troupes partent en manoeuvre : "));


    vDepart = new QComboBox;
    nbUnit = new QSpinBox;
    vArrive = new QComboBox;


    for(int i=0;i<J->v.size();i++)
    {
        if(J->v.value(i)->getUnites()>0){
            vDepart->addItem(J->v.value(i)->getNom());
        }

    }
    QString v=vDepart->currentText();
    Villes *V2 = getVille(J, v);
    vArrive->addItems(V2->voisin);
    nbUnit->setRange(1,V2->getUnites());

    QString nomV1 = tr("Ville de départ :");
    QString nomV2 = tr("Ville d'arrivée :");
    QString nomV3 = tr("Nombre de troupe(s) à déplacer :");
    form.addRow(nomV1, vDepart);
    form.addRow(nomV3, nbUnit);
    form.addRow(nomV2, vArrive);
    QObject::connect(vDepart, SIGNAL(currentTextChanged(QString)), this, SLOT(changerVille(QString)));


    QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
                               Qt::Horizontal, this);
    form.addRow(&buttonBox);
    QObject::connect(&buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    QObject::connect(&buttonBox, SIGNAL(rejected()), this, SLOT(reject()));

    if(this->exec()== QDialog::Accepted)
    {
        Villes *Vdep=getVille(J,vDepart->currentText());
        Villes *Varr=getVille(J,vArrive->currentText());
        if(Varr==NULL){
            Varr=getVille(O,vArrive->currentText());
        }
        int AnciProp=Varr->getProprietaire();
        int NouvProp=Vdep->action(Varr, nbUnit->value());
        if (NouvProp!=AnciProp){
            if(AnciProp!=0){
                P->v.removeOne(Varr);
                J->setVillesEnnemis();
            }            
            J->v.append(Varr);
            J->setVillesTotal();
        }
        return true;

    }
    return false;
}

Villes* FenetreAttaque::getVille(Joueur *p, QString nomVille){

    for(int i=0;i<p->v.size();i++)
    {
        if(p->v.value(i)->getNom()==nomVille)
        {
            return p->v.value(i);
        }
    }
    return NULL;
}

void FenetreAttaque::changerVille(QString v)
{
    Villes *V2 = getVille(J, v);
    vArrive->clear();
    vArrive->addItems(V2->voisin);
    nbUnit->setRange(1,V2->getUnites());

}
